package com.itheima.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.itheima.dao.RoleDao;
import com.itheima.pojo.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author: bowen
 * @Date: 2019/8/3 23:02
 * @Description:
 */
@Service(interfaceClass = RoleService.class)
@Transactional
public class RoleServiceImpl implements RoleService {
	@Autowired
	RoleDao roleDao;

	/**
	 *  @描述：根据名称查询角色(查询结果唯一)
	 */
	public Role selectByName(String name) {
		return roleDao.selectOne(Role.builder().name(name).build());
	}

	/**
	 *  @描述：根据描述查询角色(查询结果可能不唯一)
	 */
	public List<Role> selectByDesc(String desc) {
		return roleDao.select(Role.builder().description(desc).build());
	}

	/**
	 *  @描述：根据描述查询角色条数
	 */
	public Integer selectCountByDesc(String desc) {
		return roleDao.selectCount(Role.builder().description(desc).build());
	}

	/**
	 *  @描述：查询总的角色集合
	 */
	public List<Role> selectAll() {
		return roleDao.selectAll();
	}

	/**
	 *  @描述：根据Id查找
	 */
	public Role selectById(Integer id) {
		return roleDao.selectByPrimaryKey(id);
	}

	/**
	 *  @描述：新增角色（需要提供所有字段）
	 */
	public void insert(Role role) {
		roleDao.insert(role);
	}

	/**
	 *  @描述：新增角色  insert into role values(a)
	 */
	public void insertSelective(Role role) {
		roleDao.insertSelective(role);
	}

	/**
	 *  @描述：按照条件删除角色
	 */
	public void delete(String test) {
		roleDao.delete(Role.builder().name(test).build());
	}

	/**
	 *  @描述：根据Id删除角色
	 */
	public void deleteById(Integer id) {
		roleDao.deleteByPrimaryKey(id);

	}
	/**
	 *  @描述：更新角色（全字段）
	 */
	public void update(Role role) {
		roleDao.updateByPrimaryKey(role);
	}

	/**
	 *  @描述：更新角色（非空部分）
	 */
	public void updateSelective(Role role) {
		roleDao.updateByPrimaryKeySelective(role);
	}


}
